$(function () {
	// 支付信息
	var payDetail = {
		amount: 500000,
		payCode: '',
		voucherNo: ''
	};


	// 金额按钮
	var $payAmountItem = $('.pay-amount-item a');

	// 付款码输入框
	var $payCodeInput = $('.pay-code-input');

	// 确认按钮
	var $payBtn = $('.pay-btn');

	// 支付成功弹出框
	var $paySuccessPop = $('.pay-success-pop');

	// 支付中弹出框
	var $payingPop = $('.paying-pop');

	// 弹出框金额
	var $payDetailAmount = $('.pay-detail-amount');

	// 弹出框充值凭证
	var $payVoucherNo = $('.pay-voucher-no');

	// 关闭弹出框按钮
	var $closePopBtn = $('.close-pop-btn');

	// 报错信息
	var $errMsg = $('.error-msg');

	// 温馨提示弹出框
	var $submitPayingPop = $('.submit-paying-pop');

	// 温馨提示确认按钮
	var $submitPayingBtn = $('.submit-paying-pop .submit-paying');

	// 温馨提示取消按钮
	var $cancelPayingBtn = $('.submit-paying-pop .cancel-paying');


	// 点击金额，选中效果
	$payAmountItem.on('click', function () {
		// 选中效果
		$(this)
			.parent()
			.addClass('active')
			.siblings()
			.removeClass('active');

		// 金额赋值
		payDetail.amount = parseInt($(this).html(), 10) * 100;
	});


	// 点击确认按钮
	$payBtn.on('click', function () {
		// 付款码赋值
		payDetail.payCode = $payCodeInput.val();

		// 校验付款码
		// 付款码不得为空
		if (payDetail.payCode.length === 0) {
			getErrMsg('付款码不得为空');
			return;
		}
		// 付款码格式为18位数字
		if (!/^[0-9]{18}$/.test(payDetail.payCode)) {
			getErrMsg('请输入微信支付授权码（以10/11/12/13/14/15为前缀的18位数字）');
			return;
		}

		// 按钮不可用
		$payBtn.attr('disabled', 'disabled');


		// ajax调用支付接口接口
		$.ajax({
			type: 'GET',
			url: makePayUrl(/*payDetail.amount*/1, payDetail.payCode),
			dataType: 'json',
			success: function (res) {
				if (res.resultCode === 'SUCCESS') {
					// 支付凭证赋值
					payDetail.voucherNo = res.data.voucherNo;
					if (res.data.status === '2') {
						// 支付成功
						paySuccess(res.data.amount, payDetail.voucherNo);
					} else if (res.data.status === '3') {
						// 支付中
						$payingPop.removeClass('hidden');
						checkPaying(payDetail.voucherNo);
					}
				} else {
					// 按钮可用
					$payBtn.removeAttr('disabled');
					getErrMsg(res.errCodeDes);
				}
			},
			error: function () {
				// 按钮可用
				$payBtn.removeAttr('disabled');
				getErrMsg('网络错误');
			}
		});
	});


	// 点击关闭弹出框
	$closePopBtn.on('click', function () {
		// 关闭弹出框
		$paySuccessPop.addClass('hidden');

		// 清空数据
		payDetail.payCode = '';
		payDetail.voucherNo = '';
	});


	// 温馨提示弹出框确认
	$submitPayingBtn.on('click', function () {
		$.ajax({
			type: 'GET',
			url: makeCheckUrl(payDetail.voucherNo),
			dataType: 'json',
			success: function (res) {
				if (res.resultCode === 'SUCCESS') {
					if (res.data.status === '2') {
						// 支付成功
						paySuccess(res.data.amount, payDetail.voucherNo);
					} else {
						// 支付超时
						payError();
					}
				} else {
					getErrMsg(res.errCodeDes);
				}
			},
			error: function () {

			}
		});
	});


	// 温馨提示弹出框取消
	$cancelPayingBtn.on('click', function () {
		// 支付超时
		payError();
	});


	// 支付接口URL
	function makePayUrl(amount, payCode) {
		var result = 'http://paytest.shopping98.com/pay/cashier/gateway.shtml?' +
			'service=cashier.barpay&merchant_no=562084306991529984&' +
			'total_fee=' + amount + '&auth_code=' + payCode;
		return result;
	}


	// 查询接口URL
	function makeCheckUrl(voucherNo) {
		var result = 'http://paytest.shopping98.com/pay/cashier/gateway.shtml?' +
			'service=cashier.barpay.query&transaction_id=' + voucherNo;
		return result;
	}


	// 支付中，调用查询接口，监控80s
	// 如果返回支付成功，调用成功函数，否则，支付失败
	function checkPaying(voucherNo) {
		var startTimeStamp = new Date().getTime();
		var timer = window.setInterval(function () {
			if (new Date().getTime() - startTimeStamp > 80000) {
				// 支付中弹出框关闭
				$payingPop.addClass('hidden');
				// 温馨提示弹出框弹出
				$submitPayingPop.removeClass('hidden');
				clearInterval(timer);
			}
			$.ajax({
				type: 'GET',
				url: makeCheckUrl(voucherNo),
				dataType: 'json',
				success: function (res) {
					console.log(res);
					if (res.resultCode === 'SUCCESS') {
						if (res.data.status === '2') {
							// 支付成功
							paySuccess(res.data.amount, voucherNo);
							clearInterval(timer);
							return;
						}
					} else {

					}
				},
				error: function () {

				}
			});
		}, 5000);
	}


	// 支付成功
	function paySuccess(amount, voucherNo) {
		// 弹出框赋值
		$payDetailAmount.html(amount);
		$payVoucherNo.html(voucherNo);

		// 关闭支付中弹出框
		$payingPop.addClass('hidden');

		// 关闭温馨提示弹窗
		$submitPayingPop.addClass('hidden');

		// 打开支付成功弹出框
		$paySuccessPop.removeClass('hidden');

		// 按钮可用
		$payBtn.removeAttr('disabled');

		// 清空错误信息
		$errMsg.html('');
	}


	// 支付超时
	function payError() {
		// 清空数据
		payDetail.payCode = '';
		payDetail.voucherNo = '';

		// 关闭支付中弹出框
		$payingPop.addClass('hidden');

		// 关闭温馨提示弹窗
		$submitPayingPop.addClass('hidden');

		// 按钮可用
		$payBtn.removeAttr('disabled');

		getErrMsg('支付超时');
	}

	// 添加错误信息
	function getErrMsg(msg) {
		$errMsg.html(msg);
	}
});